package com.satan.juc.demo15;

import java.util.Iterator;
import java.util.concurrent.ConcurrentLinkedQueue;

/**
 * @Author: Demon
 * @Date: 2024/3/29 18:06
 * @Description: ConcurrentLinkedQueue的基本API
 **/
public class ConcurrentLinkedQueueDemo {
    public static void main(String[] args) {
        //offer(E e) - 向队列尾部插入元素
        ConcurrentLinkedQueue<Integer> queue = new ConcurrentLinkedQueue<>();
        queue.offer(1); // 添加元素1到队列
        //poll() - 获取并移除队列头部的元素
        Integer value = queue.poll(); // 返回并移除队列头部的元素，如果队列为空，则返回null
        //peek() - 获取但不移除队列头部的元素
        Integer peek = queue.peek(); // 返回队列头部的元素，如果队列为空，则返回null
        //add(E e) - 向队列尾部添加元素，如果队列已满会抛出异常（由于是无界队列，实际上不会发生）
        queue.add(2); // 添加元素2到队列
        //isEmpty() - 检查队列是否为空：
        boolean empty = queue.isEmpty(); // 检查队列是否为空，如果队列为空，则返回true，否则返回false
        //size() - 获取队列中的元素数量
        int size = queue.size(); // 返回队列中的元素数量
        //contains(Object o) - 检查队列是否包含指定元素
        boolean contains = queue.contains(2); // 检查队列是否包含元素2，如果包含则返回true，否则返回false
        //remove(Object o) - 移除队列中指定的元素
        boolean removed = queue.remove(1); // 如果成功移除元素1，返回true
        //iterator() - 返回队列元素的迭代器
        Iterator<Integer> iterator = queue.iterator();
        while(iterator.hasNext()) {
            Integer nextValue = iterator.next();
            // 处理nextValue
        }
        //clear() - 清空队列中的所有元素
        queue.clear(); // 移除队列中的所有元素
    }

}
